From: Mario Sanchez Prada Date: Wed, 27 Jan 2016 22:35:11 +0000 (+0000) Subject: slider: Emit a 'drag-begin' signal when starting to drag X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1011 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=779b1ae8e565087de2203486e4f81288fb6a4aec;p=gnome-shell.git slider: Emit a 'drag-begin' signal when starting to drag We are already emitting a 'drag-end' signal when no more dragging is happening, so it makes sense to emit a 'drag-begin' too when starting, so that apps interested in implementing different logic between those two events can easily do it without needing to deal with the underlying 'button-press-event' signal for the actor. https://bugzilla.gnome.org/show_bug.cgi?id=761208 --- diff --git a/js/ui/slider.js b/js/ui/slider.js index d7ae2f2fe..02dbfae79 100644 --- a/js/ui/slider.js +++ b/js/ui/slider.js @@ -137,6 +137,10 @@ const Slider = new Lang.Class({ this._motionId = this.actor.connect('motion-event', Lang.bind(this, this._motionEvent)); } + // We need to emit 'drag-begin' before moving the handle to make + // sure that no 'value-changed' signal is emitted before this one. + this.emit('drag-begin'); + let absX, absY; [absX, absY] = event.get_coords(); this._moveHandle(absX, absY); @@ -224,6 +228,7 @@ const Slider = new Lang.Class({ let delta = key == Clutter.KEY_Right ? 0.1 : -0.1; this._value = Math.max(0, Math.min(this._value + delta, 1)); this.actor.queue_repaint(); + this.emit('drag-begin'); this.emit('value-changed', this._value); this.emit('drag-end'); return Clutter.EVENT_STOP;